From ab8bebdc0c639497b718faaf7321af91b4938d49 Mon Sep 17 00:00:00 2001 From: medina5 Date: Mon, 5 Jan 2026 23:05:23 +0100 Subject: [PATCH] priorite --- README.md | 1 + histoire.md | 44 ++++++++++++++++++++++++++++ math.md | 44 ++++++++++++++++++++++++++++ opérateurs.md | 61 +++++++++++++++++++++++++++++++++++++++ opérateurs/comparaison.md | 28 ++++++++++++++++++ opérateurs/priorite.md | 25 ++++++++++++++++ 6 files changed, 203 insertions(+) create mode 100644 histoire.md create mode 100644 math.md create mode 100644 opérateurs.md create mode 100644 opérateurs/comparaison.md create mode 100644 opérateurs/priorite.md diff --git a/README.md b/README.md index 0be7e70..f71c318 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Sa syntaxe de base a inspiré de nombreux langages plus récents dont C++, Java - [Opérateurs d'affectation](opérateurs/affectation.md) - [Opérateurs arithmétiques](opérateurs/arithmétiques.md) - [Opérateurs logiques](opérateurs/logique.md) +- [Opérateurs de comparaison](opérateurs/compataison.md) - [Opérateurs bit à bit](opérateurs/bit.md) ### Les instructions diff --git a/histoire.md b/histoire.md new file mode 100644 index 0000000..afef77f --- /dev/null +++ b/histoire.md @@ -0,0 +1,44 @@ +# Histoire du langage C + +Le langage C a été créé au début des années 1970 par Dennis Ritchie et Ken Thompson aux laboratoires Bell (AT&T) pour réécrire le système d'exploitation UNIX, qui était initialement en langage d'assemblage. + +### Langage C original + +La première version du C sort en 1972. Elle était étroitement liée au développement d'UNIX. Son adoption rapide a fait de C le langage privilégié pour développer des systèmes d'exploitation et des logiciels nécessitant des performances et une gestion fine de la mémoire. + +### K & R C + +En 1978, Brian Kernighan et Dennis Ritchie publient le livre de référence "The C Programming Language". C'est la première formalisation du langage C. Ce standard a dominé jusqu'au milieu des années 1980. Il introduisait des concepts tels que les types de données, les structures. + +### ANSI C ou C89 + +Dans les années 1980, le besoin d'un standard plus formel s'est fait sentir, car plusieurs versions divergentes de C étaient utilisées. En 1989, l'ANSI (American National Standards Institute) publie le standard ANSI C ou C89. Cette version standardise plusieurs éléments du langage. + +### C90 + +Le standard C89 est adopté par l'ISO (International Organization for Standardization) en 1990, sous le nom de C90. Les deux versions, ANSI C et C90, sont donc pratiquement identiques. + +### C99 + +En 1999, une révision majeure du langage a été publiée sous le nom de C99. Cette version introduit de nombreuses améliorations, dont : + +- La prise en charge des variables déclarées à n'importe quel endroit du code, pas seulement au début d'un bloc. +- Les tableaux dynamiques et les types entiers plus précis. +- Les boucles for avec des variables locales. +- De nouvelles fonctions mathématiques et des améliorations sur la précision des nombres flottants. + +### C11 + +En 2011, le standard C11 apporte des améliorations pour le rendre plus moderne tout en conservant sa simplicité. Il introduit : + +- Le support des threads avec une bibliothèque standard pour le multi-threading. +- La gestion des alignements mémoire. +- De nouvelles fonctionnalités de sécurité + +### C18 + +En 2018, C18 qui est une version mineure qui clarifie et corrige certaines ambiguïtés du C11 sans ajouter de nouvelles fonctionnalités significatives. Elle se concentre essentiellement sur la correction de bugs et des révisions formelles du langage. + +### C23 + +Le langage évolue encore. Les nouveautés sont très spécifiques à des cas d'utilisation trés poussés. diff --git a/math.md b/math.md new file mode 100644 index 0000000..6e04157 --- /dev/null +++ b/math.md @@ -0,0 +1,44 @@ +# Fonctions mathématiques + +Chaque fonction est déclinée en fonction du type de données utilisé pour le paramètre et la valeur de retour : double, float ou long double. + +## Fonctions de calculs d'arrondis + +Fonction | double | float | long double +---|---|--- | --- +Arrondi à l'entier le plus proche | `round` | `roundf` | `roundl` +Arrondi entier supérieur | `ceil` | `ceilf` | `ceill` +Arrondi entier inférieur | `floor` | `floorf` | `floorl` +Extraire la partie entière | `trunc` | `truncf` | `truncl` + +> [!WARNING] +> Attention aux valeurs négatives ! La valeur plancher de -5.21 est -6 car -6 est inférieure à -5.21. + +## Fonctions exponentielles et logarithmiques + +Fonction | double | float | long double +---|---|--- | --- +Exponnentielle $e^{x}$ | `exp` | `expf` | `expl` +Logarithme naturel | `log` | `logf` | `logl` + +## Fonctions trigonométriques + +Fonction | double | float | long double +---|---|--- | --- +Cosinus | `cos` | `cosf` | `cosl` +Sinus | `sin` | `sinf` | `sinl` +Tangente | `tan` | `tanf` | `tanl` +Arc cosinus | `acos` | `acosf` | `acosl` +Arc sinus | `asin` | `asinf` | `asinl` +Arc tangente | `atan` | `atanf` | `atanl` + +## Fonctions hyperboliques + +Fonction | double | float | long double +---|---|--- | --- +Cosinus | `cosh` | `coshf` | `coshl` +Sinus | `sinh` | `sinhf` | `sinhl` +Tangente | `tanh` | `tanhf` | `tanhl` +Arc cosinus | `acosh` | `acoshf` | `acoshl` +Arc sinus | `asinh` | `asinhf` | `asinhl` +Arc tangente | `atanh` | `atanhf` | `atanhl` diff --git a/opérateurs.md b/opérateurs.md new file mode 100644 index 0000000..9461510 --- /dev/null +++ b/opérateurs.md @@ -0,0 +1,61 @@ +# Opérateurs + +>Un **opérateur** est un symbole qui indique au programme qu'il faut effectuer des opérations mathématiques ou logiques spécifiques. +{class=definition} + +## Opérateurs de signe + +Supposons que la variable **a** a pour valeur 7 + +Opérateur | Description | Exemple +---|---|--- +\+ | positif | a + -5 = 2 +\− | inversion de signe | a − +5 = 2 + +## Opérateurs arithmétiques + +Supposons que la variable **a** a pour valeur 7 et que la variable **b** la valeur 19 alors : + +Opérateur | Description | Exemple +---|---|--- +\+ | Addition | a + b = 26 +− | Soustraction | a − b = -12 +\* | Multiplication | a * b = 133 +/ | Division | b / a = 2 +% | Modulo, reste de la division entière | b % a = 5 +++ | Opérateur d'incrémentation
augmente la valeur entière de 1. | a++ = 8 +-- | Opérateur de décrémentation
diminue la valeur entière de 1. | a\-\- = 6 + +## Opérateurs relationnels + + + + + +## Opérateurs logiques + +Supposons que la variable **a** a pour valeur 1 et que la variable **b** la valeur 0 alors : + +Opérateur | Description | Exemple +---|---|--- +&& | **ET logique**. Si les deux opérandes sont différents de zéro, la condition devient vraie. | a && b est faux. +\|\| | **OU logique**. Si l'un des deux opérandes est différent de zéro, la condition devient vraie. | a \|\| b est vrai. +! | **NON logique**. Il est utilisé pour inverser l'état logique de son opérande. Si une condition est vraie, alors l'opérateur logique NON la rendra fausse. | !(a && b) est vrai. + +En savoir plus sur les [opérateurs logiques](logique) + +Supposons que la variable **a** a pour valeur 60 et que la variable **b** la valeur 13 alors : + +En savoir plus sur les [opérateurs bit-à-bit](bit) + + +## Autres + +Outre les opérateurs évoqués ci-dessus, il existe quelques autres opérateurs importants. + +Opérateur | Description | Exemple +---|---|--- +sizeof() | Renvoie la taille d'une variable. sizeof(a), où a est un entier, renverra 4. +& | Renvoie l'adresse d'une variable. &a renvoie l'adresse réelle de la variable. +\* | Pointeur de la variable *a; +? : | Expression conditionnelle. diff --git a/opérateurs/comparaison.md b/opérateurs/comparaison.md new file mode 100644 index 0000000..f4563b6 --- /dev/null +++ b/opérateurs/comparaison.md @@ -0,0 +1,28 @@ +# Opérateurs relationnels ou de comparaison + +### Égalité + +`==` Vérifie si les valeurs de deux opérandes sont égales ou non. Si oui, alors la condition devient vraie (1). + +### Différent + +`!=` Vérifie si les valeurs de deux opérandes sont égales ou non. Si les valeurs ne sont pas égales, la condition devient vraie (1). + +### Supérieur + +`>` Vérifie si la valeur de l'opérande gauche est supérieure à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1). + +### Inférieur + +`<` Vérifie si la valeur de l'opérande gauche est inférieure à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1). + +### Supérieur ou égal + +`>=` Vérifie si la valeur de l'opérande gauche est supérieure ou égale à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1). + +### Inférieur ou égal + +`<=` Vérifie si la valeur de l'opérande gauche est inférieure ou égale à la valeur de l'opérande droit. Si oui, alors la condition devient vraie (1). + +Le résultat des opérateurs conditionnels sont 1 pour la condition vraie et 0 pour la condition fausse; + diff --git a/opérateurs/priorite.md b/opérateurs/priorite.md new file mode 100644 index 0000000..bb27b7a --- /dev/null +++ b/opérateurs/priorite.md @@ -0,0 +1,25 @@ +## Priorité et ordre d'évaluation + +La priorité des opérateurs détermine le groupement des termes dans une expression et décide comment une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres ; par exemple, l'opérateur de multiplication a une priorité plus élevée que l'opérateur d'addition. + +Par exemple, x = 7 + 3 * 2; ici, x est assigné à 13, pas 20 parce que * a une priorité plus élevée que +. On effecture d'abord la multiplication 3 * 2, puis on ajoute 7. + +Les opérateurs avec la plus haute priorité apparaissent en haut du tableau, ceux avec la plus basse apparaissent en bas. Dans une expression, les opérateurs de priorité supérieure seront évalués en premier. + +Categorie | Opérateurs | Associativité +--- |---|--- +Préfixe | () [] -> . ++ \-\- | de gauche à droite +Unaire | + - ! ~ ++ \-\- (type)* & sizeof | de droite à gauche +Multiplicative | * / % | de gauche à droite +Additive | + - | de gauche à droite +Décallage | << >> | de gauche à droite +Relationnelle | < <= > >= | de gauche à droite +Égalité | == != | de gauche à droite +Et binaire | & | de gauche à droite +Ou exclusif | ^ | de gauche à droite +Ou binaire | \| | de gauche à droite +Et logique | && | de gauche à droite +Ou logique | \|\| | de gauche à droite +Ternaire | ?: | de droite à gauche +Assignation | = += -= *= /= %=>>= <<= &= ^= \|= |de droite à gauche +Séquence | , | de gauche à droite