Cours - Page d`accueil

Transcription

Cours - Page d`accueil
Informatique
Cours
Lycée Fénelon
BCPST 1
Initiation à SCILAB
A. Utilisation de SCILAB en mode immédiat
A. 1. Les types de données simples . . . . . . . . .
a) Les constantes prédéfinies . . . . . . .
b) Les constantes définies par affectation
c) Les booléens . . . . . . . . . . . . . .
d) Les fonctions prédéfinies . . . . . . . .
e) Les chaînes de caractères . . . . . . .
A. 2. Les opérations sur les données simples . . . .
a) Opérateurs arithmétiques . . . . . . .
b) Opérateurs relationnels . . . . . . . .
c) Opérateurs logiques . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
3
3
3
4
4
5
5
6
6
6
6
B. Utilisation de SCILAB en mode différé
B. 1. Écriture d’un script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B. 2. Écriture d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introduction
Il existe au moins deux manières d’utiliser SCILAB :
• en mode immédiat (ou interpréteur), c’est-à-dire comme une calculatrice géante, en tapant
sur la ligne de commande ce que l’on veut voir exécuter puis en attendant le résultat ;
• en mode différé (ou compilateur), c’est-à-dire comme un environnement de programmation
en écrivant des scripts (avec l’éditeur de texte) puis en invoquant ces scripts à partir de
l’invite de commande.
L’objectif de ce chapitre est de décrire ces deux modes de fonctionnement.
2
A.
Utilisation de SCILAB en mode immédiat
Dans un premier temps, nous allons utiliser SCILAB comme une calculatrice scientifique, c’està-dire en mode immédiat.
A. 1.
Les types de données simples
Les commandes envoyées à SCILAB peuvent être des expressions ou des instructions, construites
à partir des données connues par le logiciel. Ces données sont très nombreuses et nous nous
contentons ici de décrire celles qui permettent une utilisation basique de SCILAB.
a)
Les constantes prédéfinies
On distingue deux types de constantes : celles prédéfinies et celles définies par affectation (que
nous étudierons au paragraphe suivant). Ces constantes peuvent être des nombres réels ou des
nombres complexes.
Voici une liste (non exhaustive) des constantes prédéfinies dans SCILAB :
Constante mathématique
π
e
ε-machine
i
Instruction SCILAB
%pi
%e
%eps
%i
Exercice 1.
Tapez à l’invite les expressions suivantes, suivies de la touche entrée :
--> 2 ∗ %pi
//
l’étoile ∗ désigne la multiplication
--> (1 + %e)/2
//
le slash / désigne la division
--> %eps
--> 1 + %eps
--> %iˆ2, (1 − %i)ˆ2
// ˆ permet d’élever à la puissance
--> 2 ∗ %pi + ...
3^2
--> %pi;
Remarques :
• Le double slash // permet d’ajouter un commentaire : SCILAB ignore ce qui suit.
• Sauf pour la dernière commande, la réponse (answer ) est donnée sous la forme ans = suivi
du résultat (sur la ligne suivante). La variable ans est créée automatiquement pour stocker
la valeur de l’expression courante.
• Les touches du clavier représentant des flèches verticales vous permettent de circuler rapidement à travers toutes vos frappes précédentes, puis de les éditer (pour éventuellement les
modifier) avec les flèches gauche et droite.
• Les calculs sont effectués en double précision (16 chiffres après la virgule). SCILAB n’est donc
pas un logiciel de calcul formel : il ne connaît ni π ni e mais seulement des valeurs approchées
de ces nombres. On verra que, pour cette raison, SCILAB ne trouve pas 0 lorsqu’il calcule
sin π !!
• On peut entrer plusieurs commandes sur une même ligne : il suffit pour cela de séparer les
différentes commandes par une virgule.
• On peut également entrer une seule commande sur plusieurs lignes (lorsque l’instruction est
trop longue) en terminant chaque ligne que l’on veut prolonger par des points de suspension.
• Le point virgule ; est un inhibiteur d’affichage, c’est-à-dire qu’il indique à SCILAB de ne pas
afficher le résultat du calcul. C’est très pratique pour les calculs intermédiaires.
3
b)
Les constantes définies par affectation
L’affectation est l’instruction qui donne une valeur à une variable (que l’on crée ou que l’on
modifie). Sa syntaxe est simple : on choisit une lettre (seule ou suivie de lettre(s) ou de chiffre(s))
et on lui attribue une valeur à l’aide du signe =.
Exercice 2.
Tapez à l’invite les expressions suivantes, suivies de la touche entrée :
--> a = 2
//
On doit lire : a est affectée à la valeur 2 --> a = a + 1
//
On doit lire : a est remplacé par a + 1 --> A=2 ∗ %pi;
//
SCILAB distingue minuscules et majuscules
--> a + A, ans + a
--> clear a, a
//
clear permet de supprimer une variable
--> A1 = 1.2D − 1,
//
notation scientifique
--> x = rand()
//
rand() génère un nombre aléatoire entre 0 et 1
Remarques :
• Lorsqu’on affecte une valeur à la variable a, la réponse de SCILAB est donnée sous la forme
a = suivi de la valeur affectée (sur la ligne suivante).
• La première commande de l’exercice crée la variable a et lui affecte la valeur 2. La deuxième
instruction modifie l’affectation de a : la nouvelle valeur de a est définie à l’aide de l’ancienne.
• ans est une variable temporaire. Il faut donc faire attention lorsqu’on l’utilise car son affectation change dès que l’on envoie une expression à SCILAB.
• L’instruction clear a supprime la variable a. L’instruction clear (sans rien derrière) supprime toutes les variables.
• Une variable qui n’a pas été affectée ou qui a subi un clear n’existe pas (SCILAB renvoie un
undefined variable lorsqu’on lui demande la valeur d’une variable qui n’est pas affectée).
• Essayer plusieurs fois la commande x = rand() (ne rien mettre entre les parenthèses).
c)
Les booléens
Les constantes booléennes sont
Constante boolénne
Vrai
Faux
Instruction SCILAB
%t
%f
Ces constantes permettent d’évaluer la valeur logique d’une relation.
Exercice 3.
Tapez à l’invite les expressions suivantes, suivies de la touche entrée :
--> %t, %f
--> a = 3 > 2, b = 1 > 2
--> a | b, a&b
//
| et & désignent le ou et le et logiques
--> ˜a
//
˜ désigne la négation logique
BOOLE G, anglais, 1815-1864
Autodidacte, Boole peut être considéré comme le créateur de la logique moderne. Il
est à l’origine de la notion d’ensemble et du calcul sur ces ensembles liant la logique
mathématique au calcul algébrique (The Mathematical Analysis of Logic, 1847). Boole résolut ainsi un des problèmes fondamentaux de formalisation du langage et du raisonnement,
que se posaient les mathématiciens depuis Leibniz. La pertinence de ses travaux lui permirent l’obtention (1849) d’une chaire de mathématiques au Queen’s College de Cork (sud
de l’Irlande).
4
d)
Les fonctions prédéfinies
Comme tout bon logiciel de calcul, SCILAB possède une bibliothèque de fonctions usuelles. Le
tableau suivant dresse la liste des plus courantes :
Fonction
exp
log
sin
cos
tan
|·|
Instruction SCILAB
exp
log
sin
cos
abs
Ens. de définition
R
R∗+
R
R
tan
π
R\
+ πZ
2
C
√
·
ℜe
ℑm
sqrt
real
imag
C
C
C
Exercice 4.
Tapez à l’invite les expressions suivantes, suivies de la touche entrée :
--> log(−1)
--> a = sin(%pi), a<%eps
--> abs(1 + %i)
--> sqrt(2 ∗ %i)
Remarques :
• Comme nous l’avions annoncé, SCILAB ne trouve pas 0 lorsqu’il calcule sin π mais l’erreur
qu’il commet est bien évidemment inférieure à l’ε-machine.
• SCILAB ne bronche pas si vous lui demandez la racine carrée d’un nombre complexe : il vous
renvoie la racine de partie réelle positive (pour les nombres réels négatifs, il choisit la racine
de partie imaginaire positive).
e)
Les chaînes de caractères
Une chaîne de caractères est, comme son nom l’indique, une phrase constituée avec les lettres,
les chiffres et les symboles spéciaux auxquels vous avez accès avec le clavier (il y a en tout 223
caractères imprimables dans le code ASCII).
Pour indiquer à SCILAB une chaîne de caractères comme bonjour , on l’écrit entre guillemets
doubles : "bonjour".
Exercice 5.
Tapez à l’invite les expressions suivantes, suivies de la touche entrée :
--> s1="bon", s2="jour"
--> s1+s2
//
+ désigne ici la concaténation
--> disp("salut")
--> "l’’apostrophe"
//
ce sont deux guillemets simples
Remarques :
• La concaténation permet de coller deux chaînes de caractères.
• La fonction disp affiche une chaîne de caractères sans l’affecter à la variable ans.
• La succession de deux guillemets simples ne forme pas des guillemets doubles mais permet
d’afficher l’apostrophe à l’intérieur d’une chaîne de caractère.
5
A. 2.
Les opérations sur les données simples
Nous nous contentons ici des opérations les plus courantes sur les différents types de données
rencontrés au paragraphe précédent. La plupart de ces opérations ont déjà été introduites dans les
exercices précédents.
a)
Opérateurs arithmétiques
Les principales opérations sur les nombres sont :
b)
Opération mathématique
Instruction SCILAB
addition +
+
soustraction −
−
multiplication ×
∗
division ÷
/
puissance ˆ
^
Opérateurs relationnels
Les principales relations sont :
Relation mathématique
Instruction SCILAB
égalité =
==
différent =
∼= ou <>
inférieur strict <
<
supérieur strict >
>
inférieur ou égal <=
supérieur ou égal >=
Remarque :
• En SCILAB, le signe = sert pour l’affectation des variables alors que == est utilisé dans
les tests. Si vous rentrez l’expression 3 = 2 derrière l’invite de commande, SCILAB réagit
par Warning: obsolete use of = instead of ==. La syntaxe exacte de l’expression
boolénne 3 est égal à 2 est 3 == 2.
c)
Opérateurs logiques
Les principaux opérateurs logiques sont :
Opérateur logique
Instruction SCILAB
conjonction et
&
disjonction ou
|
négation non
∼
6
B.
Utilisation de SCILAB en mode différé
Jusqu’à présent, SCILAB a été utilisé de manière conversationnelle, c’est-à-dire que les résultats
des commandes apparaissaient au fur et à mesure qu’on les validait. Il est possible d’écrire ces
suites d’instructions dans des fichiers qui pouront être appelés durant une session. On distingue
deux types de fichiers : les scripts et les fonctions .
B. 1.
Écriture d’un script
La ligne de commande est pratique lorsque l’on utilise SCILAB comme une calculatrice. Mais
si l’on désire rentrer une suite d’instructions plus longue ou si l’on veut répéter plusieurs fois la
même séquence de commandes, il est préférable d’écrire celles-ci dans un script (à l’aide de l’éditeur
de texte) puis de l’exécuter à partir de SCILAB.
Pour cela, on doit :
;
• ouvrir une fenêtre de l’éditeur de texte en cliquant sur l’icône
• sauver le fichier avec l’extension .sce ou .sci dans son dossier personnel (en évitant les
collisions de noms) ;
• taper la suite d’instructions dans le fichier ;
• exécuter ce script en cliquant sur Exec . . . dans le menu Fichier puis en choisissant (en
changeant éventuellement de répertoire courant) votre script :
Exercice 6.
Écrire un script qui, lorsqu’il est exécuté, fait s’afficher la phrase Bonjour, nous sommes
le date où date désigne la date du jour.
♦
Dans un fichier Bonjour.sce, on écrit "Bonjour, nous sommes le "+date()
♦
Remarques :
• Attention ! La collision de nom est une source très fréquente d’erreur(s). Pour éviter les
problèmes, je vous conseille de toujours bien vérifier que le nom de votre script n’est pas déjà
le nom d’une instruction SCILAB.
• Pour s’y retrouver dans vos fichiers SCILAB, il est recommandé de bien sauver vos scripts
sous l’extension .sce ou .sci.
7
B. 2.
Écriture d’une fonction
La programmation sous SCILAB fait un usage immodéré des fonctions (quelques instructions
mises à part, l’essentiel des commandes de SCILAB correspond à des fonctions). Outre les fonctions
usuelles que connaît SCILAB, on peut en acquérir d’autres en chargeant en mémoire des bibliothèques préfabriquées (packages). On peut également définir soi-même de nouvelles fonctions en
écrivant puis en exécutant des sous-programmes de type function, à l’instar des scripts.
Pour cela, on doit :
• ouvrir une fenêtre de l’éditeur de texte en cliquant sur l’icône
;
• taper la suite d’instructions dans le fichier en adoptant la syntaxe suivante :
function y=nom(x1,x2,...,xn)
//
x1,...,xn sont les variables
liste d’instructions
//
calcul de y à partir des variables
endfunction
• sauver le fichier avec l’extension .sce ou .sci dans son dossier personnel ;
• charger cette fonction en mémoire de la même manière qu’on exécute un script (en cliquant
sur Exec . . . dans le menu Fichier puis en choisissant nom.sci) : si tout se passe bien,
SCILAB répond Exécution terminée. (mais ne fait rien dans l’immédiat) ;
• utiliser ensuite cette fonction comme n’importe qu’elle autre fonction.
La compilation d’un script (extension .sce) entraine l’exécution immédiate des commandes
contenues dans le script. Au contraire, lorsqu’on compile une fonction (extension .sci), SCILAB
n’affiche rien dans l’immédiat mais charge la définition de la fonction en mémoire, ce qui permet
de l’utiliser ensuite en précisant la valeur de la variable.
On retiendra donc que l’on doit écrire une fonction lorsque l’on veut effectuer des commandes
qui dépendent d’un paramètre et que l’on peut se contenter d’un script dans le cas contraire.
Exercice 7.
Écrire une fonction qui, lorsqu’elle est chargée puis exécutée, fait s’afficher la phrase Bonjour
prénom , nous sommes le date où prénom désigne le prénom de l’utilisateur et date
représente la date du jour.
♦
Dans un fichier Bonjour.sci, on écrit :
function phrase = bonj(prenom)
//
évitez les accents
phrase = "Bonjour " + prenom + ", nous sommes le " + date()
endfunction
puis on exécute ce fichier. On peut alors utiliser la fonction bonj comme toute autre fonction.
8
♦