logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [04/06/2014 09:59]
Hypathie [Symboles dans les calculs mathématiques]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [25/02/2023 03:46]
agp91 [Les bases arithmétiques]
Ligne 2: Ligne 2:
  
   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.
-  * Niveau requis : {{tag>​débutant}}+  * Niveau requis : {{tag>​débutant ​avisé}}
   * Commentaires : scripts   * Commentaires : scripts
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>​en-chantier ​à-tester ​}}  +  * Suivi :  {{tag>​en-chantier}} 
-    * Création par **Hypathie** 08/​04/​2014 +    * Création par [[user>Hypathie]] le 08/​04/​2014 
-    * Testé par <Hypathie> le <Avril 2014> +    * Testé par [[user>Hypathie]]  ​Avril 2014 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=87499#p87499 ​Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=140882#p140882 ​ici]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**RAPPEL DU PLAN DE LA SÉRIE : **\\ 
  
-1) Intro I :  ​[[atelier:chantier:​bash-les-differents-caracteres-speciaux|Bash : Introduction]]\\ +  * [[doc:programmation:​shells:​bash-les-differents-caracteres-speciaux|Vision d'​ensemble]] 
 +  * [[doc:​programmation:​shells:​la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] 
 +  * [[doc:​programmation:​shells:​la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] 
 +  * [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] 
 +  * ;-) 
 +  * [[doc:​programmation:​shells:​page-man-bash-v-les-tableaux|Les tableaux]] 
 +  * [[doc:​programmation:​shells:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] 
 +  * [[doc:​programmation:​shells:​bash-vii-globs-etendus-regex| Bash : Variables, globs étendus, ERb, ERe]]
  
-2) chap II : [[atelier:​chantier:​la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]]\\ ​+<note important>​ 
 +Page en court de réécriture 
 +</​note>​ 
 +===== Introduction =====
  
-3) chap III : [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|Bash : les opérateurs ​lexicographiques]]\\ +Dans la page précédente ([[doc:programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs ​de comparaison numérique]]), nous avons abordé la commande interne **let** et la commande composée **<​nowiki>​((...))</​nowiki>​**.\\  
 +Nous complémentons ici leurs usages, pour réaliser des opérations mathématiques.
  
-4chap IV : [[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]\\ +Les commandes **let** et **<​nowiki>​((...))</​nowiki>​** sont les seules commandes internes que bash dispose pour réaliser des opérations mathématiques.\\  
 +A travers elles, bash est limité à opérer que sur des entiers signés (positifs ou négatifs).\\  
 +Le résultat de l'​évaluation d'une expression sera toujours un entier décimal signé.
  
-5chap V : C'est ici !\\ +Pour réaliser des opérations avec des nombres à virgule ou plus complexes, nous devons nous tourner vers des commandes externes tel que **bc** (non installé par défautou **awk**. Ou alors utiliser d'autres langages interprétés tel que **perl**, **python**, etc (awk, perl et python sont disponibles par défaut sur les systèmes Debian).
  
-6chap VI [[atelier:​chantier:​page-man-bash-v-les-tableaux|Bash : les tableaux]]\\ ​+Avec **let** et **<​nowiki>​((...))</​nowiki>​**,​ la plage numérique autorisée est **-9223372036854775808 < 0 > 9223372036854775807**
  
-7chap VII : [[atelier:​chantier:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash ​les caractères de transformation de parametres]]\\ ​+Après l'​évaluation des expressions qu'​elles contiennent,​ **let** et **<​nowiki>​((...))</​nowiki>​** renvoient le code de retour ​:
  
-8) chap VIII : [[atelier:​chantier:​bash-vii-globs-etendus-regex|Bash : globs étendus et regex]]+  * **0**, si le résultat est inférieur ou supérieur à 0. 
 +  * **1**, si le résultat est égale à 0.
  
-Contributeurs,​ les FIXME sont là pour vous aidersupprimez-les une fois le problème corrigé ou le champ rempli !+La commande **<​nowiki>​((...))</​nowiki>​** peut-être préfixée du caractère de remplacement **$** pour former la commande **<​nowiki>​$((...))</​nowiki>​**afin d’être remplacée par l'​évaluation de l’expression qu'​elle contient.
  
-=====Symboles ​dans les calculs mathématiques =====+<note warning>​ 
 +La commande **$[...]** équivalente à la commande **<​nowiki>​$((..))</​nowiki>​** __**ne doit plus être utilisée**__.\\  
 +\\  
 +Elle est délaissée depuis la version 2.0 de bash au profit de **<​nowiki>​((...))</​nowiki>​**.\\  
 +\\  
 +Pour des raisons de rétrocompatibilités,​ elle est toujours active ​dans nos bash modernes.\\  
 +Mais n'est plus documentée dans la page du manuel.\\  
 +\\  
 +Viendra un jour où, **$[...]** ne sera plus. 
 +</​note>​
  
-====Opérateurs arithmétiques ​====+===== Les systèmes numériques =====
  
-^opérateurs ​       ^opérations ​                    ^ +Les expressions numériques évaluées par **let** et **<nowiki>((...))</nowiki>** peuvent contenir des nombres de différent système numérique.\\  
-<code>+</​code> ​  | addition ​                     | +  
-| <​code>​ -</​code> ​ | soustraction ​                 | +L'​évaluation des expression ​(le résultat) sera toujours retourné en entier décimal.
-| <​code>/</​code> ​  | division ​(récuple quotient|  +
-| <​code>​%</code  | modulo (récuple reste) ​     | +
-| <​code>​*</​code> ​  | multiplication ​               | +
-| <​code>​** </​code>​ | puissance ​(bash 2.02 et sup.) |+
  
-**Pour les calculs complexes bash n'est pas adaptéil faut utiliser ​le langage bc.**+  ​Sans précision ​les nombres sont en base 10 (décimal). 
 +  * Préfixé d'un **0**, le nombre est un octal (base 8). 
 +  ​Préfixé de **0x** (ou **0X**), le nombre est un hexadécimal (base 16).
  
-====Opérateurs d'​affectation arithmétique====+Si non, la syntaxe suivante peut-être utilisée :
  
-^opérateurs ​               ^opérations ​                      ^ +  * [**base#​**]**n**
-| <​code>​=</​code> ​          | affectation arithmétique ​       | +
-| <​code>​+=</​code> ​         | incrémentation ​                 | +
-| <​code>​-=</​code> ​         | décrémentation ​                 | +
-| <​code>/​=</​code> ​         | affectation par division ​       | +
-| <​code>​+=</​code> ​         | affectation par multiplication ​ | +
-| <​code>​%=</​code> ​         | afectation du reste             |+
  
-**Voir ​:**\\  +Avec :
-  * **[[atelier:​chantier:​script-bash-variables-arguments-parametres?&#​typologie-des-variables|typologie de variables]]** +
-  * **[[http://​wiki.debian-facile.org/​atelier:​chantier:​script-bash-variables-arguments-parametres?&#​variables-numeriques-et-calculs|variables numériques et calculs]] +
-==== écriture utile pour les boucles : ==== +
-  * **post-incrémentation avec conservation de la la valeur et idem pour pré-incrémentation :**+
  
-<​code>​+  * **base#** où **base** est un nombre en décimal désignant la base utilisée (de 2 à 64). 
 +  * **n** Le nombre lui même : 
 +    * Jusqu'​à la base 10, le nombre contient que des chiffres. 
 +    * De la base 11 à la base 36, les lettres minuscules ou majuscules peuvent être utilisées indifféremment. 
 +    * De la base 37 à la base 64, les lettres minuscules, majuscules, @ et _ sont à utiliser dans cet ordre. 
 +===== Les opérateurs arithmétiques ===== 
 + 
 +Les opérateurs arithmétiques permettent de réaliser des calculs numériques classiques. 
 + 
 +|  Les opérateurs arithmétiques ​ ||| 
 +^  Opérateurs ​ ^  Désignations ​ ^  Résultats ​ ^ 
 +| Opérateurs unaires ||| 
 +| **''​+''​** //​expr//​ | Signe positif | Valeur de //​expr//​ | 
 +| **''​-''​** //​expr//​ | Signe négatif | Opposé de //​expr//​ | 
 +| Opérateurs binaires ||| 
 +| //expr1// **''​+''​** //​expr2//​ | Addition | //expr2// ajouté à //​expr1//​ | 
 +| //expr1// **''​-''​** //​expr2//​ | Soustraction | //expr2// retiré de //​expr1//​ | 
 +| //expr1// **''​*''​** //​expr2//​ | Multiplication| //expr1// multiplié par par //​expr2//​ | 
 +| //expr1// **''/''​** //​expr2//​ | Division | //expr1// divisé par //​expr2//​ | 
 +| //expr1// **''​%''​** //​expr2//​ | Modulo | Reste de la division de //expr1// par //​expr2//​ | 
 +| //expr1// **''<​nowiki>​**</​nowiki>''​** //expr2//| Puissance | //expr1// multiplié par lui-même //expr2// fois | 
 + 
 +=====Opérateurs d'​affectation arithmétique===== 
 + 
 +^opérateurs ​                        ​^opérations ​                      ^ 
 +| ''<​nowiki>​=</​nowiki>​ '' ​          | affectation arithmétique ​       | 
 +| ''<​nowiki>​+=</​nowiki>​ '' ​         | incrémentation ​                 | 
 +| ''<​nowiki>​-=</​nowiki>​ '' ​         | décrémentation ​                 | 
 +| ''<​nowiki>/​=</​nowiki>​ '' ​         | affectation par division ​       | 
 +| ''<​nowiki>​+=</​nowiki>​ '' ​         | affectation par multiplication ​ | 
 +| ''<​nowiki>​%=</​nowiki>​ '' ​         | afectation du reste             | 
 + 
 +**Voir :** 
 +  * **[[doc:​programmation:​shells:​script-bash-variables-arguments-parametres?&#​typologie-des-variables|typologie de variables]]** 
 +  * **[[doc:​programmation:​shells:​script-bash-variables-arguments-parametres?&#​variables-numeriques-et-calculs|variables numériques et calculs]]** 
 + 
 +=====Opérateurs binaires ===== 
 +Ces opérateurs s'​utilisent sur des binaires, (sur des 1 et des zéro). 
 + 
 +^ Opérateurs ​      ^ significations ​                                            ^ 
 +| ''<<'' ​ | décalage d'un bit à gauche (=mutiplication par deux)       | 
 +| ''>>''​ | décalage d'un bit à droite (=division par deux)            | 
 +| ''&<'' ​  | "​et"​ logique ​ (ex : on a une variable=1; si on fait &1 cela fait 1 (en binaire 1 et 1 = 1)| 
 +| ''​|<'' ​ | ou (inclusif) binaire ​                                     | 
 +| ''​~'' ​  | non binaire ​                                               | 
 +| ''​^'' ​  | XOR (ou exclusif) binaire ​                                 |  
 + 
 +<​note>​ 
 +Le ''&<''​ ( "​et"​ binaire), le ''​|<''​ ("​ou"​ binaire), et le ''​~''​ ("​non"​ binaire)\\ peuvent aussi être remplacés (de façon équivalente) par les opérateurs logiques que l'on a vus au sujet de la composition de commandes sur erreur ou sur réussite. 
 + 
 +> ''&&'' ​ : exécution de la commande suivante si, et seulement si la précédente renvoie 0 
 +
 +> ''​||'' ​ : exécution de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 
 +
 +> ''​!'' ​  : inverse du retour d'une commande, c'est à dire un "​non"​ logique 
 +^_^ 
 +</​note>​ 
 +===== Écriture utile pour les boucles ===== 
 +===Post-incrémentation et pré-incrémentation :=== 
 + 
 +<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y  # ici les signes = permettent une affection declare -i x=20 y  # ici les signes = permettent une affection
 (( y = x++ ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) puis la valeur ​ (( y = x++ ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) puis la valeur ​
-                   # ​ de x est incrémenté ​($x est donc égal à 21)+                   # ​ de x est incrémentée ​($x est donc égal à 21)
                    # les espaces autour du signe = ne sont pas obligatoires                    # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​  # réponse : y=20 x=21 echo "y=$y x=$x" ​  # réponse : y=20 x=21
 </​code>​ </​code>​
  
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = ++x ))      # d'​abord la valeur de x est incrémentée puis la valeur de y reçoit ​ (( y = ++x ))      # d'​abord la valeur de x est incrémentée puis la valeur de y reçoit ​
-                   # la valeur du x incrémentée+                   # la valeur du x incrémenté
                    # les espaces autour du signe = ne sont pas obligatoires                    # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​  # réponse : y=21 x=21 echo "y=$y x=$x" ​  # réponse : y=21 x=21
 </​code>​ </​code>​
  
-  * **post-décrémentation ​avec conservation de la la valeur ​et idem pour pré-décrémentation :** +===Post-décrémentation et pré-décrémentation :=== 
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = x-- ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20)  (( y = x-- ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) 
-                   # puis la valeur de x est décrémenté ​($x est donc égal à 19)+                   # puis la valeur de x est décrémentée ​($x est donc égal à 19)
                    # les espaces autour du signe = ne sont pas obligatoires ​                      # les espaces autour du signe = ne sont pas obligatoires ​  
 echo "y=$y x=$x" ​  # réponse : y=20 x=19 echo "y=$y x=$x" ​  # réponse : y=20 x=19
 </​code>​ </​code>​
  
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = --x ))           # d'​abord la valeur de x est décrémentée ($x=19), puis la valeur de y  (( y = --x ))           # d'​abord la valeur de x est décrémentée ($x=19), puis la valeur de y 
-                        # reçoit la valeur du x incrémentée ​(donc $y=19)+                        # reçoit la valeur du x incrémenté ​(donc $y=19)
                         # les espaces autour du signe = ne sont pas obligatoires                         # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​       # réponse : y=19 x=19 echo "y=$y x=$x" ​       # réponse : y=19 x=19
 </​code>​ </​code>​
 +<note tip>
 +En bref,​\\ ​
 +__**Post-incrémentation/​décrémentation**__ : Les signes d'​incrémentation (**''​++''​**) ou de décrémentation (**''<​nowiki>​--</​nowiki>''​**) sont placés **après** une valeur à incrémentée (+1) ou à décrémenter (-1) ; cette valeur est conservée dans "​y"​ puis elle est **incrémentée (+1)** ou **décrémentée (-1)**.\\ ​
  
-===tuto précédent ​:===+__**Pré-incrémentation/​décrémentation**__ : Les signes d'​incrémentation (**''​++''​**) ou de décrémentation (**''<​nowiki>​--</​nowiki>''​**) sont placés **avant** une valeur à incrémentée ou à décrémenter ; cette valeur est **incrémentée (+1)** ou **décrémentée (-1)** puis elle est conservée dans "​y"​. 
 +</​note>​ 
 +=====Tuto ​précédent ​=====
  
-[[atelier:chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]+[[doc:programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]
  
-===La suite, c'est ici === +=====La suite, c'est ici ===== 
-[[atelier:chantier:​page-man-bash-v-les-tableaux|Bash : les tableaux]]+[[doc:​programmation:shells:​page-man-bash-v-les-tableaux|Bash : les tableaux]]
doc/programmation/shells/page-man-bash-iv-symboles-dans-les-calculs-mathematiques.txt · Dernière modification: 26/04/2023 19:29 par bendia

Pied de page des forums

Propulsé par FluxBB