Algorithmique: structures de controle
This commit is contained in:
parent
bd7e3ef549
commit
63c73a9386
100
Cours.md
100
Cours.md
@ -40,16 +40,16 @@ Les instructions élémentaires sont : addition, multiplication, modulo et parti
|
||||
|
||||
Un **type abstrait** est un triplet composé :
|
||||
|
||||
* d'un nom ;
|
||||
* d'un nom
|
||||
* d'un ensemble de valeurs
|
||||
* d'un ensemble d'opérations définies sur ces valeurs.
|
||||
|
||||
Les types abstraits de base de l'algorithmique sont :
|
||||
|
||||
* entier (int)
|
||||
* caractère (char)
|
||||
* booléen (boolean)
|
||||
* réel (double)
|
||||
* entier (`int`)
|
||||
* caractère (`char`)
|
||||
* booléen (`boolean`)
|
||||
* réel (`double`)
|
||||
|
||||
Une **variable** est un triplet composé :
|
||||
|
||||
@ -57,53 +57,119 @@ Une **variable** est un triplet composé :
|
||||
* d'un nom (a priori toute chaîne alphanumérique)
|
||||
* d'une valeur.
|
||||
|
||||
Les **expressions** sont constituées à l'aide de variables déjà déclarées, de valeurs, de parenthèses et d'opérateurs du (des) type(s) de variables concernées.
|
||||
Les **expressions** sont constituées à l'aide de variables déjà déclarées, de valeurs, de parenthèses et d'opérateurs du (des) type(s) de variables concernées. Une expression a une valeur qui peut être utilisée par une instruction.
|
||||
|
||||
L'**affectation** est l'instruction qui permet de stocker une valeur dans une variable.
|
||||
|
||||
**Evaluer** une expression ou une variable consiste à déterminer sa valeur courante.
|
||||
|
||||
## Types de base
|
||||
|
||||
### Booléens
|
||||
|
||||
Une variable de type booléen prend comme valeur VRAI (true) ou FAUX (false). Les opérations usuelles sont ET (&&), OU (||) et NON (!) qui sont données dans les tables qui suivent :
|
||||
Une variable de type booléen prend comme valeur VRAI (`true`) ou FAUX (`false`). Les opérations usuelles sont ET (`&&`), OU (`||`) et NON (`!`) qui sont données dans les tables qui suivent :
|
||||
|
||||
![OU](https://algo.developpez.com/tutoriels/initiation/images/10000000000000F000000047A81967DE0AE0CFB7.gif)
|
||||
|
||||
![ET](https://algo.developpez.com/tutoriels/initiation/images/10000000000000F00000003CD94585357F59CD48.gif)
|
||||
|
||||
![NON](https://algo.developpez.com/tutoriels/initiation/images/10000000000000A70000003C6EB52D563A7241F9.gif)
|
||||
|
||||
### Entiers
|
||||
|
||||
Une variable de type entier peut prendre comme valeur l'ensemble des nombres entiers signés. Les opérations associées sont les opérations usuelles +,-,\*,/.
|
||||
Une variable de type entier peut prendre comme valeur l'ensemble des nombres entiers signés. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`.
|
||||
|
||||
### Réels
|
||||
|
||||
Une variable de type réel peut prendre comme valeur l'ensemble des nombres réels. Les opérations associées sont les opérations usuelles +,-,\*,/.
|
||||
Une variable de type réel peut prendre comme valeur l'ensemble des nombres réels. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`.
|
||||
|
||||
### Caractères
|
||||
|
||||
Une variable de type char peut prendre comme valeur l'ensemble des caractères imprimables. On notera les valeurs entre apostrophe (', quote). On considère souvent que les caractères sont ordonnés dans l'ordre alphabétique.
|
||||
Une variable de type char peut prendre comme valeur l'ensemble des caractères imprimables. On notera les valeurs entre apostrophe (`'`, quote). On considère souvent que les caractères sont ordonnés dans l'ordre alphabétique.
|
||||
|
||||
### Chaines de caractères
|
||||
|
||||
Une variable de type chaine de caractères peut prendre comme valeur tout suite de caractères (y compris vide). On notera les valeurs entre guillemets (", double quote). Le type en java est noté **String**. L'operation + permet de concaténer (fusionner) des chaines de caractères.
|
||||
Une variable de type chaine de caractères peut prendre comme valeur tout suite de caractères (y compris vide). On notera les valeurs entre guillemets (`"`, double quote). Le type en java est noté **`String`**. L'opération `+` permet de concaténer (fusionner) des chaines de caractères.
|
||||
|
||||
"Hello" + "World"
|
||||
=
|
||||
|
||||
"HelloWorld"
|
||||
|
||||
### Attention
|
||||
|
||||
Les valeurs :
|
||||
|
||||
* "1" qui est une chaine de caractères
|
||||
* '1' qui est un caractère
|
||||
* 1 qui est un entier
|
||||
* 1.0 qui est un réel
|
||||
* `"1"` qui est une chaine de caractères
|
||||
* `'1'` qui est un caractère
|
||||
* `1` qui est un entier
|
||||
* `1.0` qui est un réel
|
||||
|
||||
sont différentes et ne seront pas codées de la même manière dans la mémoire de la machine.
|
||||
|
||||
### Comparaison
|
||||
|
||||
Les opérateurs <, ≤, ==, !=, >, ≥ permettent de comparer les valeurs de type entier, réel et caractère. Le résultat de cette comparaison est une valeur booléenne.
|
||||
Les opérateurs `<`, `<=`, `==`, `!=`, `>`, `>=` permettent de comparer les valeurs de type entier, réel et caractère. Le résultat de cette comparaison est une valeur booléenne.
|
||||
|
||||
## Structure de contrôle
|
||||
|
||||
Il y a trois structures principales de contrôle qui permettent de construire des algorithmes.
|
||||
|
||||
### Bloc d'instructions
|
||||
|
||||
{
|
||||
instruction1;
|
||||
instruction2;
|
||||
...
|
||||
}
|
||||
|
||||
### Alternative/condition
|
||||
|
||||
if (expression)
|
||||
bloc1
|
||||
|
||||
Les instructions du bloc _bloc1_ sont exécutées si _expression_ a une valeur booléenne vraie.
|
||||
|
||||
if (expression)
|
||||
bloc1
|
||||
else
|
||||
bloc2
|
||||
|
||||
Les instructions du bloc _bloc1_ sont exécutées si _expression_ a une valeur booléenne vraie, les instructions du _bloc2_ sinon.
|
||||
|
||||
switch (variable) {
|
||||
case valeur1:
|
||||
bloc1
|
||||
break;
|
||||
case valeur2:
|
||||
bloc2
|
||||
break;
|
||||
...
|
||||
default:
|
||||
bloc3
|
||||
}
|
||||
|
||||
Les instructions du _bloc1_ sont exécutées si la variable a la valeur _valeur1_, du _bloc2_ si la variable a la valeur _valeur2_, du _bloc3_ dans les autres cas.
|
||||
|
||||
### Répétition/boucle
|
||||
|
||||
while (expression)
|
||||
bloc
|
||||
|
||||
Si _expression_ a une valeur booléenne vraie, les instructions de _bloc_ sont exécutées. Cet enchainement se reproduit tant que _expression_ est vraie. Une **boucle infinie** se produit lorsque l'expression ne devient jamais fausse.
|
||||
|
||||
do
|
||||
bloc
|
||||
while (expression)
|
||||
|
||||
Similaire au cas précédent, mais le bloc d'instructions est exécuté avant l'évaluation de l'expression. Par conséquent, ce bloc est exécuté au moins une fois.
|
||||
|
||||
for (initialisation; expression; incrementation)
|
||||
bloc
|
||||
|
||||
Le bloc d'instructions _bloc_ est exécuté tant que _expression_ a une valeur booléenne vraie. Une variable peut être initialisée par l'instruction _initialisation_ et incrémentée par l'instruction _incrémentation_. Exemple:
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
// boucle sur les entiers de 0 à 9
|
||||
}
|
||||
|
||||
## Fonctions
|
||||
|
Loading…
Reference in New Issue
Block a user