Opérateurs et fonctions

Quelques opérateurs et fonctions

Nous avons déjà utilisé couramment la plupart des opérateurs arithmétiques habituels:

D'autre part, nous avons vu que le langage Pascal Delphi accepte l'utilisation des fonctions.

Nous allons ajouter quelques opérateurs et fonctions utiles.

Des opérateurs sur les entiers

Les nombres entiers supportent très bien les opérateurs +, * et -. Cependant, la division fait un problème.

X := 8/2;Si l'on essaie de compiler le fragment de code suivant, Delphi rapporte une erreur sur l'opération de division.
Le résultat de l'opération 8/2 (ou toute autre division) est une valeur réelle; elle ne peut donc être stockée dans un entier.

Mais il est devenu fou, Delphi? 8/2 = 4 ; c'est bien une valeur entière! Où est le problème?

Le problème tient dans le fait que les deux nombres impliqués doivent être codés. Par défaut, Delphi considère que ce sont des réels. Ceux-ci sont codés différemment des entiers.
Le résultat de la division d'un réel par un réel est bien... un réel. Incompatible donc avec un entier comme la variable X.

La solution à ce problème réside dans l'existence d'opérateurs spécifiques aux entiers:

Ces opérateurs fonctionnent comme la bonne vieille division du début de l'école primaire.

1
7
3
:
8
1
6
·
:
---
---
·
:
21
1
3
:
8
:
---
:
Reste:
5
:

173 DIV 8 = 21, et il reste 5.

c'est-à-dire

173 MOD 8 = 5


Effectue les opérations indiquées ci-dessous. Clique sur le bouton OK pour vérifier chacune d'elles.

2
1
7
:
9
:
---
:
Reste:
3
2
7
:
8
:
:
:
Reste:
2
1
5
:
11
:
---
:
Reste:

MonnaieDans un magasin, un article coûte 11,57 ?. Un client paie cet article avec un billet de 50 ?.

Détaille la monnaie qui lui est rendue par le commerçant, en imaginant qu'il utilise les plus grosses coupures ou pièces disponibles: billets de 20 ?, billets de 10 ?, pièces de 2 ?, ...

Quel est le rapport entre ce calcul et les opérateurs DIV et MOD que nous venons d'évoquer?

Des fonctions

Outre la fonction Random() utilisée précédemment, Delphi est muni d'un grand nombre d'autres fonctions de tous types.

Fonctions trigonométriques:

sin(angle) calcule le sinus d'un angle exprimé en radians
cos(angle) calcule le cosinus d'un angle exprimé en radians
tan(angle) calcule la tangente d'un angle exprimé en radians
cot(angle) calcule la cotangente d'un angle exprimé en radians
arcsin(valeur) calcule l'inverse du sinus d'une valeur comprise dans l'intervalle [-1, +1]
arccos(valeur) calcule l'inverse du cosinus d'une valeur comprise dans l'intervalle [-1, +1]
arctan(valeur) calcule l'inverse de la tangente d'une valeur
arccot(valeur) calcule l'inverse de la cotangente d'une valeur

Fonctions mathématiques

abs(valeur) renvoie la valeur absolue d'un nombre (le nombre sans son signe)
exp(valeur) Renvoie l'exponentielle de X, c'est-à-dire eX (où e est la base des logarithmes népériens, 2,718281828...)
frac(valeur) Renvoie la partie décimale d'un réel.
int(valeur) Renvoie la partie entière d'un nombre réel.
ln(valeur) Renvoie le logarithme népérien d'une expression réelle.
odd(valeur) Renvoie true (vrai) si l'argument est un nombre impair.
pi Renvoie 3.1415926535897932385 (fonction sans argument)
round(valeur) Renvoie la valeur de l'argument arrondie au plus proche entier.
sqr(valeur) Renvoie le carré de l'argument.
sqrt(valeur) Renvoie la racine carrée de l'argument.
trunc(valeur) Tronque un réel en entier. La partie décimale est perdue.
trunc(6.75) retourne 6

Fonctions de texte

chr(valeur) Renvoie le caractère correspondant à une valeur ASCII.
concat(chaîn1, chaîne2, ...) Concatène deux chaînes ou plus:
concat('ceci est un', ' test') renvoie la valeur 'ceci est un test'
copy(chaîne, début, nbre)

Renvoie une sous-chaîne d'une chaîne. Cette fonction demande trois paramètres:

  • la chaîne de caractères à traiter
  • le début de l'extraction
  • le nombre de caractères à extraire

copy('Ceci est une chaîne', 6, 3) renvoie la valeur 'est'

length(chaîne) Renvoie le nombre de caractères d'une chaîne
pos(recherche, chaîne) Renvoie la valeur d'indice du premier caractère dans une sous-chaîne spécifiée qui se trouve dans une chaîne ou 0 si la sous-chaîne n'a pas été trouvée.
pos('est', 'Ceci est une chaîne') renvoie la valeur 6
upperCase(chaîne) renvoie une chaîne contenant le même texte que celui de la chaîne transmise en argument, l'ensemble des lettres ayant été converties en majuscules
uppercase('ceci est une chaîne') renvoie 'CECI EST UNE CHAîNE'
lowerCase(chaîne) renvoie une chaîne contenant le même texte que celui de la chaîne transmise en argument, l'ensemble des lettres ayant été converties en majuscules

Et, bien sûr, il faut connaître tout cela par coeur?

Certainement pas! L'idée ici est d'indiquer quelques fonctions qui peuvent être utiles. L'aide de Delphi offre des explications et des exemples.
On se référera à ce document et/ou à l'aide de Delphi en cas de besoin.

Extraire la liste des fonctions pour l'impression: Imprimer

Quand tu as bien compris le fonctionnement des opérateurs sur les entiers et parcouru l'ensemble des fonctions présentées ici, passe à la page suivante. Vers la page suivante Page suivante


Dernière modification 18/08/2016 Test dans /info ...