Dans ce cours, nous avons vu à plusieurs reprises comment calculer
un avis à partir de notes : avec la fonction ifelse, avec la fonction cut
(voir fonctions prédéfinies)
ou avec les instructions for et if
(voir exercice 4 du chapitre 2, question 4-d).
Pour la fonction ifelse ou la fonction cut, le logiciel n'offre
pas de commodité particulière.
Il vous permet néanmoins d'insérer du code R dans du code Xml
en utilisant la commande code_libre du menu Instructions, puis en complétant le code
ainsi créé (ajout en gras) :
...
<code><![CDATA[
avis = ifelse(moyenne<8,"non", ifelse(moyenne<10,"oral","oui") )
]]></code>
...
Pour les instructions for et if, l'applette dispose de deux commandes spécifiques
dans le menu Instructions.
Le code ainsi créé (voir écran) doit
ensuite être complété :
...
<pour var="i" debut="1" fin="length(math)" pas="1">
<instruction nom="si">
<si condition="moyenne[i] < 8">
<affectation var="avis[i]" expression="'recale'"/>
</si>
<si condition="(moyenne[i] >= 8) ET (moyenne[i] < 10)">
<affectation var="avis[i]" expression="'oral'"/>
</si>
<si condition="moyenne[i] >= 10">
<affectation var="avis[i]" expression="'admis'"/>
</si>
</instruction>
</pour>
...
La traduction vers R(ou Sas) sera
assurée si vous adoptez les conventions suivantes :
-
opérateurs ET, OU : ET, OU (en majuscules)
-
>, < : doivent être précédés et suivis par un espace (pour ne pas être confondus avec les balises Xml)
... à moins que vous ne préfériez leur syntaxe Xml (< ou >) !
-
>=, <= : pas de problème de notation, même si < et > sont des caractères spéciaux en Xml
Dernière remarque algorithmique : puisque les alternatives d'un si s'excluent, vous pouvez simplifier
les alternatives 2 (condition="moyenne[i] < 10") et 3 (condition="").