# Programmation/Expressions

* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
[ Modifier le sommaire ]
Une expression est un segment de code qui exécute une opération arithmétique puis retourne une valeur correspondant au résultat de l'opération. Par exemple, la ligne suivante est une expression effectuant une addition :
3 + 4
L'expression $3+4$ retourne la valeur 7 lorsqu'elle est évaluée.

## Composition

L'expression $3+4$ se compose de deux parties : les opérandes (3 et 4), qui sont les valeurs auxquelles l'opération s'applique, et l'opérateur (+), qui spécifie l'opération à effectuer. Selon le type de notation en vigueur, l'opérateur peut être soit préfixée (+ 3 4) dans le cadre de la notation polonaise notamment, infixée (3 + 4) comme on a l'habitude de le voir ou post-fixée (3 4 +) comme dans le cadre de la notation polonaise inverse. Les notations polonaises permettent notamment de s'affranchir des parenthèses mais sont moins accessibles aux débutants.

## Exploitation

Pour exploiter les expressions exécutées par le système, le moyen le plus commode est d'utiliser des variables auxquelles on affecte les valeurs retournées par les expressions. Pour affecter le résultat d'une expression à une variable, la syntaxe varie selon les langages. Ainsi pour affecter le résultat de l'expression $3+4$ à une variable a, on peut utiliser la syntaxe a := 3 + 4 en Pascal ou en Ada ; a = 3 + 4 en C et dans tous les langages qui en dérivent ou 3 + 4 → a en Basic Casio par exemple

## Expressions avec des opérandes variables

Il est également possible grace aux variables d'effectuer des calculs à partir d'opérandes qui ne soient pas des valeurs constantes telles que 3 ou 4. La ligne suivante par exemple est une expression effectuant également une addition :
variable1 + variable2
L'expression précédente effectue l'addition entre la valeur stockée par la première variable et celle "contenue" dans la deuxième variable. Ainsi le programme devient non seulement capable d'effectuer une addition entre 3 et 4 si les valeurs des variables avaient respectivement été 3 et 4, mais également toutes les additions possibles et imaginables selon la nature des variables et des valeurs que le programme leur a assignées. Ainsi, le programme devient capable de produire un résultat différent selon l'état des variables utilisées dans le programme, et devient même capable de réagir à l'environnement extérieur à l'ordinateur lorsque les variables sont reliées à un dispositif d'entrée comme le clavier ou la souris.

## Influence du typage

Selon le type des variables qu'on utilise lors de l'exécution d'une opération arithmétique, le résultat peut sensiblement varier, voire produire des incohérences en cas de types incompatibles : il apparait en effet improbable que diviser une variable contenant le mot "arbre" avec la valeur de $pi$ produise un résultat probant. De même, diviser deux nombres entraîne souvent le retour d'une valeur décimale, par exemple la division de 3 par 2. Or si on a affecté la valeur de retour de cette expression à une variable Int, cette valeur est tronquée à l'entier immédiatement inférieur, voire arrondie dans les langages plus évoluées au nombre entier le plus proche. Ainsi, il est préférable de typer en float une variable destinée à accueillir le résultat d'une division, plus généralement, de typer les variables impliquées dans des opérations arithmétiques de manière avisée et apte à répondre à tous les contextes auxquels le programme peut les soumettre.

## Niveau système

Le processeur effectue le calcul des expressions, opération par opération. À son niveau, tout est ramené à des nombres, représentés numériquement en binaire (base 2) sur un nombre fixe de bits, chacun valant 0 ou 1. Le circuit du processeur comporte plusieurs bus de transport des données (1 bit par piste, 2 états : soit le courant passe, soit il ne passe pas) pour faire circuler les valeurs numériques entre les registres, les bus externes connectés aux autres circuits (notamment la mémoire) et l'unité arithmétique et logique qui effectue les opérations demandées.
Les transistors composant le processeur sont utilisés pour créer des portes logiques simples.
    Pour plus de détails voir : Fonctionnement d'un ordinateur.
* décrire les mécanismes internes comme le décalage pour les multiplications et divisions