You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
4.6 KiB

# ALGORITHMIQUE
## les "bases"
comment compter, binaire, décimal octet, hexa
## Variables :
mettre une valeur dans une boite en lui donnat un nom
s'écrit :
```
var a entier;
a=2;
```
*Note* : zéro s'écrit avec un O barré : `0`
Types de variables possibles :
- boolean / booléen / bool : vrai / faux
- entier / integer / int : 1 ... 3 .... 2345 .... valeur max pour l'ordinateur
- décimal / float : 0,3 ... 1,2 ... 56,2345 .... valeur max pour l'ordinateur
- alphanumérique / chaine / string : "bonjour", "a123", ... Par convention on mets des guillements autour.
Il existe souvent des variables prédéfinies (fonction des langages) qui ne peuvent être changée, on appelle alors ces variables des **constantes**. Pi est un bon exemple.
Exemple en JavaScript :
```
Math.PI
```
Exemple en PHP
```
M_PI
```
Au dela des variables simple il existe des variables structurés comme les listes ou les piles (que nous ne détaillerons pas ici). La plus communément utilisée est le tableau.
Un tableau est série de boite avec un seul nom.
On écrira / lira dans un tableau en référençant les cases de celui si par un index numérique commençant à 0. on l'initialisera avec une liste de valeurs entre crochets;
```
var tab tableau;
tab = [32,12,234,98,6,8,29,15,1053,14,34];
afficher tab[0]; /* donne 32 */
afficher tab[3]; /* donne 98 */
tab[1]=639; /* le tableau deviens [32,639,234,98,6,8,29,15,1053,14,34] */
```
## Opérateurs
Un opérateur est un symbole qui utilise ou des opérandes et vaut quelque chose.
- Opérateurs d'affectation : =, ++, --, +=, -=
- Opérateurs artimétiques binaires : +, *, /, -
- Opérateur artimétiques unaire : -
- Opérateurs conditionnels ou logiques binaires : <, >, ≤, ≥, et, ou, ==
- Opérateurs conditionnel unaire : !
Pour les opérateur d'affectations :
- = permet de mettre une valeur dans une variable.
- Les opérateurs unaires -- et ++ correspondent respectivement à ```i=i-1``` et ```i=i+1```
- Les opérateurs unaires -= et += permettre d'incrémenter d'une valeur donnée. i-=3 et i+=5 correspondent respectivement à ```i=i-3``` et ```i=i+5```. i++ et i-- peuvent donc aussi s'écrire respectivement ```i-=1``` et ```i+=1```
**Note** : un utilisera * pour multiplier pour ne pas le confondre avec un X minuscule.
## structures
un structure est une technique "d'embranchement".
### structures conditionelles
- si alors sinon
```
si (condition) alors
_action 1_
sinon
_action 2_
fin si
```
- selon cas
```
selon reponse
cas "bonjour"
_action 1_
fin cas
cas "merci"
_action 2_
fin cas
cas par defaut
_action 3_
fin cas
fin selon
```
### structures itératives
- pour
Cette structure permet d'éxécuter une nombre de fois donnée une action
Il y a 3 choses à préciser, la valeur de départ, la condition de fin et la méthode d'incrément.
Exemple pour la multiplication par addition
```
variable opD,opG,resultat entier;
resultat = 0;
opD=2;
opG=3;
pour i=0; i<opD; i++
resultat = resultat+opG;
fin pour;
afficher resultat;
```
- tant que
exécuter des actions tant qu'une condition est respectée.
```
variable choix chaine;
choix = "oui"
tant que choix == "oui" faire
_action 1_
_action 2_
afficher "continuer ?";
lire choix;
fin tantque;
```
- faire tant que (do-while)
exécuter des actions tant qu'un condition est respectée, mais au moins une fois
```
variable choix chaine;
faire
_action 1_
_action 2_
afficher "continuer ?";
lire choix;
tant que choix == "oui";
```
## instructions :
un instruction est un élément de programmation "standard" dans la majorité des languages.
Par convention on terminera une instruction par ;
### afficher
affiche le résultat (sur un écran par exemple)
```
afficher "bonjour";
var a entier;
a=2;
afficher a;
```
### lire
lire la saisie d'un utilisateur
```
var reponse chaine;
lire reponse;
afficher reponse;
```
## commentaires
Comme en css ou en javascript, par convention nous utiliserons /* */ pour les commentaires en pseudo code.
## exemples
Calculer la surface d'un carré ou d'un rond
```
var dim entier;
var surface décimal;
var type chaine;
afficher "Carré ou rond ?";
lire type;
Si type == "carré" alors
afficher "coté du carré ? "
lire dim;
afficher "surface : "
afficher dim*dim;
Sinon si type == "rond" alors
afficher "rayon du rond ? "
lire dim;
afficher "surface : "
afficher PI * dim * dim;
Sinon
afficher "rond ou carré uniquement";
Fin si;
```