Les calculs de base
Il faut savoir qu'en plus de n'être qu'une vulgaire calculatrice, votre ordinateur est d'un modèle très basique, puisqu'on ne peut faire que des opérations très simples :
Voyons voir donc l'addition pour commencer.
Pour faire une addition, on utilise le signe + (non, sans blague ?
).
Vous devez mettre le résultat de votre calcul dans une variable. On va donc par exemple créer une variable "resultat" de type integer, et faire un calcul :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre1, nombre2, nombre3 : integer ;
begin
nombre3 := 5 + 10 ;
write('5+10=', nombre3) ;
readln ;
end.
Et il ne faut pas s'appeler Einstein pour deviner que ça va donner :
Code : Console
5+10=15_
Voilà pour l'addition.
Pour les autres opérations, c'est pareil, seul le signe utilisé change :
Si vous avez déjà utilisé la calculatrice sur votre ordinateur, vous devriez connaître ces signes. Le signe "moins" est en fait le tiret, le signe "multiplié" est une étoile, mais le signe 'divisé' ne s'indique pas avec un '/', mais en marquant 'div' : tout du moins, pas avec des entiers, mais on reviendra là-dessus plus tard.
Il n'y a pas de difficulté particulière pour ces opérations, à part pour les deux dernières (la division et le modulo). Nous allons donc parler un peu plus en détail de chacune d'elles.
La division
Les divisions fonctionnent normalement sur un ordinateur quand il n'y a pas de reste. Par exemple, 6 / 3 ça fait 2, votre ordinateur vous donnera la réponse juste. Jusque-là, pas de souci.
Prenons maintenant une division avec reste comme 5 / 2.
5 / 2, si vous calculez bien, ça fait 2.5.
Et pourtant ! Regardez ce que fait ce code :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : integer ;
begin
nombre := 5 div 2 ;
write(nombre) ;
readln ;
end.
Code : Console
2_
Il y a un gros problème. On a demandé 5 / 2, on s'attend à avoir 2.5, et l'ordinateur nous dit que ça fait 2 !
Il y a anguille sous roche. Nos ordinateurs seraient-ils stupides à ce point ?
En fait, quand il voit les chiffres 5 et 2, votre ordinateur fait une division de nombres entiers. Cela veut dire qu'il tronque le résultat, il ne garde que la partie entière (le 2).
Eh, mais je sais ! C'est parce que nombre est un integer ! Si ça avait été un real, il aurait pu stocker un nombre décimal à l'intérieur !
Même pas !
Essayez le même code, en transformant juste nombre en real, et vous verrez qu'il vous marque une erreur :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : real ;
begin
nombre := 5 div 2 ;
write(nombre) ;
readln ;
end.
Bon : je vous explique pourquoi, sinon on va y passer des heures
.
En fait, dans une division de real, il faut transformer le 'div' par '/' (rappelez-vous ce que je vous avais dit plus haut).
Mais ce ne sera pas assez, il ne vous marque plus d'erreur, mais il marque :
Code : Console
2.5000000000E+00
Ça ne va pas ça, va falloir enlever le truc pas beau qui traîne derrière.
Mais au fait, c'est quoi le « truc pas beau » ?
En fait, les zéros avant le E+00, vous devriez comprendre, car, comme vous le savez, 2.5 = 2.5000000000 ; donc, comme on lui donne pas de limites, l'ordinateur en met 9.
Mais alors, le E+00 ?
J'y arrive. Ça veut dire : * 10 exposant le nombre après le E : dans notre cas, c'est :
2.5 * 10 ^ 0
= 2.5 * 1
= 2.5
Toujours vivant ? Évidemment, je ne vous demande pas de retenir tout ça, c'était juste une info pour pas avoir l'air bête.
Comment on fait pour enlever « le truc pas beau » ?
On ne sait pas ôter tout ça dans la variable en elle-même, c'est durant son affichage qu'on va enlever le « truc pas beau ».
On va devoir d'abord marquer sur combien de caractères on veut étaler le nombre complet, puis, sur combien de caractères on veut étaler le nombre après la virgule.
Comment ?
Il va falloir mettre deux points ':', puis le nombre de caractères sur lesquels on veut étaler le nombre complet, puis rajouter deux points et mettre le nombre de caractères sur lesquels on veut étaler le nombre après la virgule.
Exemple :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : real ;
begin
nombre := 5 / 2 ;
write(nombre:3:1) ;
readln ;
end.
Code : Console
2.5_
Le modulo
Le modulo est une opération mathématique qui permet d'obtenir le reste d'une division. C'est peut-être une opération moins connue que les 4 autres, mais pour votre ordinateur, ça reste une opération de base...
Le modulo, je vous l'ai dit tout à l'heure, se représente par 'mod'.
Voici quelques exemples de modulos :
Le modulo 5 mod 2 est le reste de la division 5 / 2, c'est-à-dire 1. L'ordinateur calcule que 5 = 2 * 2 + 1 (c'est ce 1, le reste, que le modulo renvoie).
De même, 14 mod 3, le calcul est 14 = 3 * 4 + 2 (modulo renvoie le 2).
Enfin, pour 4 mod 2, la division tombe juste, il n'y a pas de reste, donc modulo renvoie 0.
Voilà, je ne peux pas dire grand-chose de plus au sujet des modulos. Je tenais juste à l'expliquer pour ceux qui ne connaîtraient pas.
En plus, j'ai une bonne nouvelle : on a vu toutes les opérations de base. Finis les cours de maths.
Calculs entre variables
Ce qui serait intéressant, maintenant que vous savez faire les 5 opérations de base, ce serait de s'entraîner à faire des calculs entre plusieurs variables.
En effet, rien ne vous empêche de faire :
Code : Pascal1resultat := nombre1 + nombre2;
Cette ligne fait la somme des variables nombre1 et nombre2, et stocke le résultat dans la variable resultat.
Et c'est là que les choses commencent à devenir très intéressantes.
Tenez, il me vient une idée. Vous avez maintenant le niveau pour réaliser une mini calculatrice. Si, si, je vous assure !
Imaginez un programme qui demande 2 nombres à l'utilisateur. Ces deux nombres, vous les stockez dans des variables.
Ensuite, vous faites la somme de ces variables, et vous stockez le résultat dans une variable appelée "resultat".
Vous n'avez plus qu'à afficher le résultat du calcul à l'écran, sous les yeux ébahis de l'utilisateur qui n'aurait jamais été capable de calculer cela de tête aussi vite.
Essayez de coder vous-mêmes ce petit programme, c'est facile et ça vous entraînera.
La réponse est ci-dessous :
Secret Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!Code : Pascal 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28program calculette(output) ;
var resultat, nombre1, nombre2 : integer ;
begin
resultat := 0 ;
nombre1 := 0 ;
nombre2 := 0 ;
{On a créé les 3 variables, et on leur a affecté la valeur 0 }
writeln('Je vous propose une calculette ! Entrez un premier nombre que vous voulez additionner au second !') ;
writeln('Le premier : ') ;
readln(nombre1) ;
writeln('Le deuxieme : ') ;
readln(nombre2) ;
{ On a demandé à l'utilisateur d'entrer 2 nombres }
resultat := nombre1 + nombre2 ;
{ On a fait le calcul }
write( nombre1, '+', nombre2, '=' , resultat) ;
{ Et on affiche le résultat à l'écran }
readln ;
end.
Code : Console
Entrez le nombre 1 : 35
Entrez le nombre 2 : 84
35 + 84 = 119_
Mine de rien, on vient de faire là le premier programme qui a un intérêt. Notre programme est capable d'additionner 2 nombres, et d'afficher le résultat de l'opération.
Vous pouvez essayez avec n'importe quel nombre (du moment que vous ne dépassez pas les limites d'un type integer), votre ordinateur effectuera le calcul en un éclair (encore heureux, parce que des opérations comme ça, il doit en faire des milliards dans une même seconde).
Je vous conseille de faire la même chose avec les autres opérations pour vous entraîner (soustraction, multiplication...). En plus, vous ne devriez pas avoir trop de mal vu qu'il y a juste un ou deux signes à changer.
Vous pouvez aussi ajouter une troisième variable, et faire l'addition de 3 variables à la fois, ça fonctionne sans problème :
Code : Pascal1resultat := nombre1 + nombre2 + nombre3;
N'oubliez pas qu'une division par zéro est impossible.
Les raccourcis
Comme promis, nous n'avons pas de nouvelles opérations à voir. Et pour cause ! On les a déjà toutes vues.
C'est avec ces simples opérations de base que vous pouvez tout créer. Il n'y a pas besoin d'autres opérations.
Ceci étant, il existe en Pascal des techniques permettant de raccourcir l'écriture des opérations.
Pourquoi utiliser des raccourcis ? Parce que, souvent, on fait des opérations répétitives. Vous allez voir ce que je veux dire par là tout de suite, avec ce qu'on appelle l'incrémentation.
L'incrémentation
Vous verrez que vous serez souvent amenés à ajouter 1 à une variable. Au fur et à mesure du programme, vous aurez des variables qui augmentent de 1 en 1.
Imaginons que votre variable s'appelle "nombre" (nom très original n'est-ce pas ?). Sauriez-vous comment faire pour ajouter 1 à cette variable, sans savoir quel est le nombre qu'elle contient ?
Voici comment on doit faire :
Code : Pascal1nombre := nombre + 1 ;
Que se passe-t-il ici ? On fait le calcul nombre + 1, et on range ce résultat dans la variable... nombre ! Du coup, si notre variable nombre valait 4, elle vaut maintenant 5. Si elle valait 8, elle vaut maintenant 9, etc.
Cette opération est justement répétitive. Les informaticiens étant des gens particulièrement fainéants, ils ont inventé un raccourci pour cette opération qu'on appelle l'incrémentation. L'instruction ci-dessous fait exactement la même chose que le code qu'on vient de voir :
Code : Pascal1nombre := succ(nombre) ;
Cette ligne est plus courte et s'écrit facilement, il suffit de mettre 'succ', et puis la variable à laquelle on devra rajouter 1 entre parenthèses.
La décrémentation
C'est tout bêtement l'inverse de l'incrémentation : on enlève 1 à une variable.
Même si on fait plus souvent des incrémentations que des décrémentations, cela reste une opération pratique que vous utiliserez de temps en temps.
La décrémentation, si on l'écrit en forme "longue" :
Code : Pascal1nombre := nombre - 1 ;
Et maintenant en forme "raccourcie" :
Code : Pascal1nombre := pred(nombre) ;
Au lieu de mettre succ, vous mettez pred. Si votre variable vaut 6, elle vaudra 5 après l'instruction de décrémentation.
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Il faut savoir qu'en plus de n'être qu'une vulgaire calculatrice, votre ordinateur est d'un modèle très basique, puisqu'on ne peut faire que des opérations très simples :
- Addition
- Soustraction
- Multiplication
- Division
- Modulo (je vous expliquerai ce que c'est, si vous ne savez pas).
Voyons voir donc l'addition pour commencer.
Pour faire une addition, on utilise le signe + (non, sans blague ?
![blink.gif](http://www.siteduzero.com/Templates/images/smilies/blink.gif)
Vous devez mettre le résultat de votre calcul dans une variable. On va donc par exemple créer une variable "resultat" de type integer, et faire un calcul :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre1, nombre2, nombre3 : integer ;
begin
nombre3 := 5 + 10 ;
write('5+10=', nombre3) ;
readln ;
end.
Et il ne faut pas s'appeler Einstein pour deviner que ça va donner :
Code : Console
5+10=15_
Voilà pour l'addition.
Pour les autres opérations, c'est pareil, seul le signe utilisé change :
- Addition : +
- Soustraction : -
- Multiplication : *
- Division : div
- Modulo : mod
Si vous avez déjà utilisé la calculatrice sur votre ordinateur, vous devriez connaître ces signes. Le signe "moins" est en fait le tiret, le signe "multiplié" est une étoile, mais le signe 'divisé' ne s'indique pas avec un '/', mais en marquant 'div' : tout du moins, pas avec des entiers, mais on reviendra là-dessus plus tard.
Il n'y a pas de difficulté particulière pour ces opérations, à part pour les deux dernières (la division et le modulo). Nous allons donc parler un peu plus en détail de chacune d'elles.
La division
Les divisions fonctionnent normalement sur un ordinateur quand il n'y a pas de reste. Par exemple, 6 / 3 ça fait 2, votre ordinateur vous donnera la réponse juste. Jusque-là, pas de souci.
Prenons maintenant une division avec reste comme 5 / 2.
5 / 2, si vous calculez bien, ça fait 2.5.
Et pourtant ! Regardez ce que fait ce code :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : integer ;
begin
nombre := 5 div 2 ;
write(nombre) ;
readln ;
end.
Code : Console
2_
Il y a un gros problème. On a demandé 5 / 2, on s'attend à avoir 2.5, et l'ordinateur nous dit que ça fait 2 !
Il y a anguille sous roche. Nos ordinateurs seraient-ils stupides à ce point ?
En fait, quand il voit les chiffres 5 et 2, votre ordinateur fait une division de nombres entiers. Cela veut dire qu'il tronque le résultat, il ne garde que la partie entière (le 2).
Eh, mais je sais ! C'est parce que nombre est un integer ! Si ça avait été un real, il aurait pu stocker un nombre décimal à l'intérieur !
Même pas !
Essayez le même code, en transformant juste nombre en real, et vous verrez qu'il vous marque une erreur :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : real ;
begin
nombre := 5 div 2 ;
write(nombre) ;
readln ;
end.
Bon : je vous explique pourquoi, sinon on va y passer des heures
![langue.png](http://www.siteduzero.com/Templates/images/smilies/langue.png)
En fait, dans une division de real, il faut transformer le 'div' par '/' (rappelez-vous ce que je vous avais dit plus haut).
Mais ce ne sera pas assez, il ne vous marque plus d'erreur, mais il marque :
Code : Console
2.5000000000E+00
Ça ne va pas ça, va falloir enlever le truc pas beau qui traîne derrière.
Mais au fait, c'est quoi le « truc pas beau » ?
En fait, les zéros avant le E+00, vous devriez comprendre, car, comme vous le savez, 2.5 = 2.5000000000 ; donc, comme on lui donne pas de limites, l'ordinateur en met 9.
Mais alors, le E+00 ?
J'y arrive. Ça veut dire : * 10 exposant le nombre après le E : dans notre cas, c'est :
2.5 * 10 ^ 0
= 2.5 * 1
= 2.5
Toujours vivant ? Évidemment, je ne vous demande pas de retenir tout ça, c'était juste une info pour pas avoir l'air bête.
Comment on fait pour enlever « le truc pas beau » ?
On ne sait pas ôter tout ça dans la variable en elle-même, c'est durant son affichage qu'on va enlever le « truc pas beau ».
On va devoir d'abord marquer sur combien de caractères on veut étaler le nombre complet, puis, sur combien de caractères on veut étaler le nombre après la virgule.
Comment ?
Il va falloir mettre deux points ':', puis le nombre de caractères sur lesquels on veut étaler le nombre complet, puis rajouter deux points et mettre le nombre de caractères sur lesquels on veut étaler le nombre après la virgule.
Exemple :
Code : Pascal1
2
3
4
5
6
7
8program math(output) ;
var nombre : real ;
begin
nombre := 5 / 2 ;
write(nombre:3:1) ;
readln ;
end.
Code : Console
2.5_
Le modulo
Le modulo est une opération mathématique qui permet d'obtenir le reste d'une division. C'est peut-être une opération moins connue que les 4 autres, mais pour votre ordinateur, ça reste une opération de base...
Le modulo, je vous l'ai dit tout à l'heure, se représente par 'mod'.
Voici quelques exemples de modulos :
- 5 mod 2 = 1
- 14 mod 3 = 2
- 4 mod 2 = 0
Le modulo 5 mod 2 est le reste de la division 5 / 2, c'est-à-dire 1. L'ordinateur calcule que 5 = 2 * 2 + 1 (c'est ce 1, le reste, que le modulo renvoie).
De même, 14 mod 3, le calcul est 14 = 3 * 4 + 2 (modulo renvoie le 2).
Enfin, pour 4 mod 2, la division tombe juste, il n'y a pas de reste, donc modulo renvoie 0.
Voilà, je ne peux pas dire grand-chose de plus au sujet des modulos. Je tenais juste à l'expliquer pour ceux qui ne connaîtraient pas.
En plus, j'ai une bonne nouvelle : on a vu toutes les opérations de base. Finis les cours de maths.
Calculs entre variables
Ce qui serait intéressant, maintenant que vous savez faire les 5 opérations de base, ce serait de s'entraîner à faire des calculs entre plusieurs variables.
En effet, rien ne vous empêche de faire :
Code : Pascal1resultat := nombre1 + nombre2;
Cette ligne fait la somme des variables nombre1 et nombre2, et stocke le résultat dans la variable resultat.
Et c'est là que les choses commencent à devenir très intéressantes.
Tenez, il me vient une idée. Vous avez maintenant le niveau pour réaliser une mini calculatrice. Si, si, je vous assure !
Imaginez un programme qui demande 2 nombres à l'utilisateur. Ces deux nombres, vous les stockez dans des variables.
Ensuite, vous faites la somme de ces variables, et vous stockez le résultat dans une variable appelée "resultat".
Vous n'avez plus qu'à afficher le résultat du calcul à l'écran, sous les yeux ébahis de l'utilisateur qui n'aurait jamais été capable de calculer cela de tête aussi vite.
Essayez de coder vous-mêmes ce petit programme, c'est facile et ça vous entraînera.
La réponse est ci-dessous :
Secret Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!Code : Pascal 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28program calculette(output) ;
var resultat, nombre1, nombre2 : integer ;
begin
resultat := 0 ;
nombre1 := 0 ;
nombre2 := 0 ;
{On a créé les 3 variables, et on leur a affecté la valeur 0 }
writeln('Je vous propose une calculette ! Entrez un premier nombre que vous voulez additionner au second !') ;
writeln('Le premier : ') ;
readln(nombre1) ;
writeln('Le deuxieme : ') ;
readln(nombre2) ;
{ On a demandé à l'utilisateur d'entrer 2 nombres }
resultat := nombre1 + nombre2 ;
{ On a fait le calcul }
write( nombre1, '+', nombre2, '=' , resultat) ;
{ Et on affiche le résultat à l'écran }
readln ;
end.
Code : Console
Entrez le nombre 1 : 35
Entrez le nombre 2 : 84
35 + 84 = 119_
Mine de rien, on vient de faire là le premier programme qui a un intérêt. Notre programme est capable d'additionner 2 nombres, et d'afficher le résultat de l'opération.
Vous pouvez essayez avec n'importe quel nombre (du moment que vous ne dépassez pas les limites d'un type integer), votre ordinateur effectuera le calcul en un éclair (encore heureux, parce que des opérations comme ça, il doit en faire des milliards dans une même seconde).
Je vous conseille de faire la même chose avec les autres opérations pour vous entraîner (soustraction, multiplication...). En plus, vous ne devriez pas avoir trop de mal vu qu'il y a juste un ou deux signes à changer.
Vous pouvez aussi ajouter une troisième variable, et faire l'addition de 3 variables à la fois, ça fonctionne sans problème :
Code : Pascal1resultat := nombre1 + nombre2 + nombre3;
N'oubliez pas qu'une division par zéro est impossible.
Les raccourcis
Comme promis, nous n'avons pas de nouvelles opérations à voir. Et pour cause ! On les a déjà toutes vues.
C'est avec ces simples opérations de base que vous pouvez tout créer. Il n'y a pas besoin d'autres opérations.
Ceci étant, il existe en Pascal des techniques permettant de raccourcir l'écriture des opérations.
Pourquoi utiliser des raccourcis ? Parce que, souvent, on fait des opérations répétitives. Vous allez voir ce que je veux dire par là tout de suite, avec ce qu'on appelle l'incrémentation.
L'incrémentation
Vous verrez que vous serez souvent amenés à ajouter 1 à une variable. Au fur et à mesure du programme, vous aurez des variables qui augmentent de 1 en 1.
Imaginons que votre variable s'appelle "nombre" (nom très original n'est-ce pas ?). Sauriez-vous comment faire pour ajouter 1 à cette variable, sans savoir quel est le nombre qu'elle contient ?
Voici comment on doit faire :
Code : Pascal1nombre := nombre + 1 ;
Que se passe-t-il ici ? On fait le calcul nombre + 1, et on range ce résultat dans la variable... nombre ! Du coup, si notre variable nombre valait 4, elle vaut maintenant 5. Si elle valait 8, elle vaut maintenant 9, etc.
Cette opération est justement répétitive. Les informaticiens étant des gens particulièrement fainéants, ils ont inventé un raccourci pour cette opération qu'on appelle l'incrémentation. L'instruction ci-dessous fait exactement la même chose que le code qu'on vient de voir :
Code : Pascal1nombre := succ(nombre) ;
Cette ligne est plus courte et s'écrit facilement, il suffit de mettre 'succ', et puis la variable à laquelle on devra rajouter 1 entre parenthèses.
La décrémentation
C'est tout bêtement l'inverse de l'incrémentation : on enlève 1 à une variable.
Même si on fait plus souvent des incrémentations que des décrémentations, cela reste une opération pratique que vous utiliserez de temps en temps.
La décrémentation, si on l'écrit en forme "longue" :
Code : Pascal1nombre := nombre - 1 ;
Et maintenant en forme "raccourcie" :
Code : Pascal1nombre := pred(nombre) ;
Au lieu de mettre succ, vous mettez pred. Si votre variable vaut 6, elle vaudra 5 après l'instruction de décrémentation.
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!