Proglab − Doc

Équivalences entre différents langages pour les principales instructions

Avec la participation de mathazay.

Partie 1 : variables, commentaires, structure du programme
Partie 2 : affectations, entrées/sorties, calculs
Partie 3 : tests, conditions et boucles
Tests, branchements conditionnels
Opérateurs de comparaison
Boucles
Références

Tests, branchements conditionnels

TestSi ...Si ... sinon ...Si avec plusieurs cas
Au bac
Si x = 5 Alors action
ou
Si x = 5 Alors actions
ou
Si x = 5 Alors actions Fin si
ou d'autres variantes.
Si x = 5 Alors actions Sinon actions Fin si
ou variantes.
Si x < 0 Alors actions Sinon, si x < 1 Alors actions Sinon actions Fin si
ou variantes (jamais vu dans un sujet de bac, mais ça pourrait prendre ce genre de forme).
Algobox
SI (x == 5) ALORS DEBUT_SI action(s) FIN_SI
SI (x == 5) ALORS DEBUT_SI action(s) FIN_SI SINON DEBUT_SINON action(s) FIN_SINON
SI (x < 0) ALORS DEBUT_SI action(s) FIN_SI SINON DEBUT_SINON SI (x < 1) ALORS DEBUT_SI action(s) FIN_SI SINON DEBUT_SINON action(s) FIN_SINON FIN_SINON

dans certains cas on peut aussi utiliser la fonction F2.
Javascript
if (x == 5) action;
ou
if (x == 5) { actions; }
if (x == 5) { actions; } else { actions; }
if (x < 0) { actions; } else if (x < 1) { actions; } else { actions; }
Python
if x == 5: action(s)
if x == 5: action(s) else: action(s)
if x < 0: action(s) elif x < 1: action(s) else: action(s)
R
if (x == 5) action;
ou
if (x == 5) { actions; }
if (x == 5) { actions; } else { actions; }
if (x < 0) { actions; } else if (x < 1) { actions; } else { actions; }
Casio
If X=5↲
Then actions
IfEnd↲
X=5⇒action
action
ou
If X=5↲
Then action(s)
Else action(s)
IfEnd↲
X<0⇒action
X<1⇒action
action
ou
If X<0↲
Then action(s)
Else If X<1↲
Then action(s)↲ Else action(s)
IfEnd↲
IfEnd↲
TI-Basic
:If X=5
:action
ou
:If X=5
:Then
:actions
:End
:If X=5
:Then
:actions
:Else
:actions
:End
:If X<0
:Then
:actions
:Else
::If X<1
::Then
::actions
::Else
::actions
::End
:End
Xcas
si x == 5 alors action fsi
ou
si x == 5 alors actions; fsi;
si x == 5 alors actions; sinon actions; fsi;
si x < 0 alors actions; sinon si x < 1 alors actions; sinon actions; fsi; fsi;
XLogo
si x = 5 action
ou
si x = 5 [actions]
si x = 5 [actions]
[actions]
ou
sisinon x = 5 [actions]
[actions]
si x < 0 [actions] si x < 1 [actions] [actions]

Opérateurs de comparaison

Les différents opérateurs utilisables dans les tests.

Comparaisonstrictement égalégal au sens « large »1strictement différentdifférent au sens « large »1 inférieur2, 3inférieur ou égal2, 3supérieur2, 3supérieur ou égal2, 3 etou4non logique, comme dans "non(a=b)" qui est équivalent à "a≠b"
Algobox=====!==!= <<=>>= ETOU!a==b
Javascript=====!==!= <<=>>= &&||!a==b
Python==!= <<=>>= andornot a==b
R==!= <<=>>= &&||!a==b
Casio= <> AndOrNot A=B
TI-Basic= <> andornot(A=B)
XCas==!= <<=>>= etounon(a==b)
XLogo=non(a=b) <<=>>= etounon(a=b)
Notes :
1 Ce genre d'(in)égalité n'existe que dans les langages dits « à typage faible », pour comparer des variables de types différents. Par exemple le nombre 3 et la chaîne de caractères "3" sont égaux au sens « large » mais pas au sens strict.
Quand les deux valeurs à comparer sont du même type, par exemple deux nombres, les deux genres d'(in)égalité sont parfaitement équivalents.
2 En Javascript/Algobox, si on compare un nombre avec une chaîne de caractères, c'est l'ordre numérique qui compte (3 < "11").
3 En R, si on compare un nombre avec une chaîne de caractères, c'est l'ordre alphabétique qui compte (on a 3 > "11").
4 ou inclusif : soit l'un, soit l'autre, soit les deux.

Boucles

Les boucles sont les différentes manières de répéter plusieurs fois un même groupe d'instructions.

Au bac
Répéter 10 fois action
ou
Pour i variant de 0 à 9
actions
ou
Répéter 10 fois
actions
Fin répéter
ou variantes
Tant que i < 10, répéter action
ou
Tant que i < 10
actions
Fin Tant que
ou variantes.
Algobox
POUR i ALLANT_DE 0 A 9 DEBUT_POUR action(s) FIN_POUR
TANT_QUE (i < 10) FAIRE DEBUT_TANT_QUE action(s) FIN_TANT_QUE
Javascript
for (i = 0; i < 10; i++) action;
ou
for (i = 0; i < 10; i++) { action(s); }
while (i < 10) {
action(s);
}
Python
for i in range(10):
action(s)
while i < 10:
action(s)
R
for (i in 0:9) action
ou
for (i in 0:9) { actions; }
while (i < 10) {
action(s);
}
Casio
For 0→I To 9↲
action(s)
Next↲
While I<10↲
action(s)
WhileEnd↲
TI-Basic
:For(I,0,9)
:action(s)
:End
:While I<10
:action(s)
:End
XCas
pour k de 1 jusque 10 faire action(s) fpour;
tantque k < 10 faire action(s) ftantque;
XLogo
repete 10 [action(s)]
tantque [i < 10] [action(s)]
Notes :
1 La boucle for des calculatrices va jusqu'à la valeur de fin incluse (dans l'exemple donné de toute façon la valeur 6.2 ne peut pas être atteinte).
Dans les autres langages, le test < ou <= permet de choisir. Cependant parfois il vaut mieux éviter d'inclure la borne de fin avec <= à cause des erreurs d'arrondis et de représentation des nombres.
Par exemple une boucle de −π à π inclus tous les π/12 n'atteindra généralement pas la valeur finale π, même avec la condition explicite "tant que x <= π" (alors qu'avec un pas de π/6 ça marche).
Dans ce cas on préfère une condition avec une marge comme "tant que x < π+1e-6".

Au bac Pour x allant de −6.2 à 6.21, de 0.8 en 0.8
Répéter action jusqu'à2, 3 ce que i = 10
Algobox
x PREND_LA_VALEUR -6.2 TANT_QUE (x < 6.2) FAIRE DEBUT_TANT_QUE action(s) x PREND_LA_VALEUR x+0.8 FIN_TANT_QUE
si on est absolument sûr que i≠10 avant le début de la boucle3 :
TANT_QUE (i != 10) FAIRE DEBUT_TANT_QUE action(s) FIN_TANT_QUE
Javascript
for (x = -6.2; x < 6.2; x += 0.8) { action(s); }
do {
action(s);
} while (i != 10)
Python
x = -6.2 while x < 6.2: action(s) x = x + 0.8
while True:
action(s)
if i == 10: break
ou, si on est absolument sûr que i≠10 avant le début de la boucle3 :
while i != 10:
action(s)
R
-6.2->x; while (x < 6.2) { action(s); x+0.8->x; }
repeat {
action(s);
if (i == 10) break;
}
Casio
For -6.2→X To 6.2 Step 0.8↲
action(s)
Next↲
Do↲
action(s)
LpWhile I≠10↲
TI-Basic
:For(X,-6.2,6.2,0.8)
:action(s)
:End
:Repeat I=10
:action(s)
:End
XCas
pour x de -6.2 jusque 6.2 pas 0.8 faire s:=s+0.8; fpour;
repeter action(s) jusqua i == 10;
XLogo
repetepour [i -6.2 6.2 0.8] [action(s)]
repetejusqua [i == 10] [action(s)]
Notes :
2 Dans de nombreux langages la boucle Répéter ... jusqu'à ... n'existe pas. On la trouve en TI-basic, XCas et XLogo, aussi en R sous une forme particulière (repeat ... break).
Dans les autres langage on peut utiliser une boucle Répéter ... tant que ... avec la condition contraire. Il existe aussi des instructions de fin de boucle anticipée (souvent break) qui ont le même effet que jusqu'à.
3 La boucle Répéter ... jusqu'à ... s'exécute toujours au moins une fois, même si la condition d'arrêt est réalisée avant de commencer, car le test n'est effectué quà la fin de la première itération.
Même en TI-Basic et en XLogo où le test est écrit au début de la boucle, il est effectué à la fin.

Références

Algobox : manuel officiel
Javascript : Référence Javascript en français sur le Mozilla Developer Network.
Python : Python sur wikipedia
R :
Aide-mémoire R
Support de cours sur le logiciel R (Master Statistiques Appliquées, université de Rennes 2)
R short refcard (anglais)
Xcas :
Aide-mémoire XCas au lycée
Site officiel (Bernard Parisse, Institut Fourier, université de Grenoble I)
Algorithmique et traduction pour Xcas (Renée De Graeve)
XLogo : Site officiel
Calculatrices :
Le Basic des calculatrices graphiques Texas Instruments sur wikipédia
mode d'emploi de la TI-82 stats.fr (voir le chapitre 16 : programmation)
Programmes sous TI sur le site de l'académie de Rouen
mode d'emploi des calculatrices Casio (la programmation est au chapitre 8)
Programmes sous CASIO sur le site de l'académie de Rouen
Licence Creative Commons
Ce texte est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé.
Dernière modification le 21 mars 2013
commentaires avec Disqus